package com.ecoolex.chinadutyfree.retailer.ws;

import java.util.List;

import com.ecoolex.chinadutyfree.retailer.entity.DeliveryManner;
import com.ecoolex.chinadutyfree.retailer.entity.FreightTemplate;
import com.ecoolex.chinadutyfree.retailer.entity.FreightTemplateCharging;
import com.ecoolex.chinadutyfree.retailer.entity.FreightTemplateChargingRegion;
import com.ecoolex.chinadutyfree.retailer.pojo.EditFreightTemplateChargingDTO;
import com.ecoolex.chinadutyfree.retailer.pojo.QueryFreightTemplateDTO;
import com.ecoolex.framework.common.exception.BizException;
import com.ecoolex.framework.common.pojo.Page;
import com.ecoolex.framework.common.pojo.Pagination;
import com.ecoolex.framework.common.pojo.Sorting;

public interface DeliveryService {

	DeliveryManner addDeliveryManner(DeliveryManner record, String createUser) throws BizException;

	DeliveryManner updateDeliveryManner(DeliveryManner record, String updateUser) throws BizException;

	void deleteDeliveryManner(DeliveryManner record, String updateUser) throws BizException;

	DeliveryManner getDeliveryMannerById(Integer deliveryMannerId);

	Pagination<DeliveryManner> queryDeliveryManner(String name, Sorting[] sorts, Page page);

	FreightTemplate addFreightTemplate(FreightTemplate record, List<EditFreightTemplateChargingDTO> chargingList, String createUser) throws BizException;

	FreightTemplate editFreightTemplate(FreightTemplate record, List<EditFreightTemplateChargingDTO> chargingList, String updateUser) throws BizException;

	void deleteFreightTemplate(FreightTemplate record, String updateUser) throws BizException;

	FreightTemplate getFreightTemplateById(Integer freightTemplateId);

	Pagination<FreightTemplate> queryFreightTemplate(QueryFreightTemplateDTO query, Sorting[] sorts, Page page);

	List<FreightTemplateCharging> queryFreightTemplateChargingByFreightTemplateId(Integer freightTemplateId);

	long countFreightTemplateChargingRegionByChargingId(Integer chargingId);

	List<FreightTemplateChargingRegion> queryFreightTemplateChargingRegionByChargingId(Integer chargingId, Integer size);

	List<DeliveryManner> queryDeliveryMannerByUserShoppingCartIds(Integer userId, List<Integer> cartIds);
}
